<?php
/**
 * BelongsTo
 *
 * Класс BelongsTo по сути является связью многие к одному, один к одному
 *
 * @author Кузьма Дмитрий <kouzma.d@gmail.com>
 * @version 1.1
 */
class BelongsTo{
	public $className = null;  // Класс сущности на дальнем конце связи
	public $tableName = null;  // Название таблицы сущности на дальнем конце связи
	//public $pkName = null;
	public $fkName = null;		 // Название внешнего ключа сущности на дальнем конце связи. Эти ключом осуществляется ссылка на объект (сущности на ближнем конце связи)
	public $counterCache = false;
	public $save = false;			 //

  public function __construct($arrInitial = null) {
		foreach ($arrInitial as $settingName => $settingValue) {
  		$this->setSetting($settingName, $settingValue);
  	}
  	if (isset($this->className) && !isset($this->fkName) && !isset($this->tableName)) {
  	  $s = "\$obj = new " . $this->className . "();";
			eval($s);
  	  $this->tableName = $obj->tableName;
  	  $this->fkName = $obj->pkName;
  	}
  	if (isset($arrInitial['counter']) || isset($arrInitial['cache']) || isset($arrInitial['counterCache'])) {
			if ($settingValue !== true)
			  $this->counterCache = $settingValue;
			else
				$this->counterCache = $this->tableName . 's_amount';
  	}
  }

	/**
	 * Метод устанавливает свойство (поисковое)
	 *
	 * @param string $settingName
	 * @param mixed $settingValue
	 */
	public function setSetting($settingName, $settingValue) {
		switch ($settingName) {
			case 'className':
				$this->className = $settingValue;
				break;
			case 'tableName':
				$this->tableName = $settingValue;
				break;
			case 'foreignKey':case 'fk':
				$this->fkName = $settingValue;
			case 'counter':case 'cache':case 'counterCache':

		  case 'save':
				$this->save = $settingValue;
				break;
			default:
				throw new Exception('You are trying to use invalid configuration (). The assume settings are: "className", "tableName", "foreignKey", "save", "counterCache", "pk"');
				break;
		}
	}

}

?>